<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		textarea {
			display: block;
			width: 100%;
			height: 170px;

		}
		#width {
			height: 250px;
		}
		* {
			margin: 0;
			padding: 0;
			font-size: 25px;
		}
		body,textarea{
			background: #cce8cf;
		}
		#width2 {
			height: 450px;
			margin-bottom: 10px;
		}
		.width {
			height: 750px;

		}
		.width1{
			height: 300px;
			margin-bottom: 10px;
		}
		textarea{
			margin-bottom: 20px;
			border: 1px solid black;
		}
	</style>
</head>
<body>
	<span>1.什么是接口测试？接口测试一般在测试哪个阶段？</span>
	<textarea>接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。
测试的重点是要检查数据的交换，传递和控制管理过程以及系统间的相互逻辑依赖关系等。
一般是集成测试阶段。</textarea>
	<span>2.你们公司接口测试怎么做的，流程是什么？</span>
	<textarea>
熟悉业务和需求
分析接口文档
编写接口测试用例
提测后开始测试
提交测试报告
	</textarea>
	<span>3.常见的接口测试类型有哪些？</span>
	<textarea>
按系统不同的调用方式进行分类:                 按协议的不同进行分类:
系统与系统之间的接口,系统内部		      webService 接口
服务与服务之间的调用			      http api接口
下层服务对上层服务的接口
	</textarea>

	<span>4.为什么要进行接口测试？接口测试的好处有哪些？什么时候开始接口测试？一个项目测试接口就够了吗？</span>
	<textarea id="width">
现在很多系统前后端架构是分离的，从安全层面来说，只依赖前端进行限制已经完全不能满足系统的安全要求（绕过前端太容易了）。 

需要后端同样进行控制，在这种情况下就需要从接口层面进行验证。
更早地发现问题，缩短产品研发周期，发现更底层的问题。

接口测好了，前端随便变，后端不用变，检查系统的安全性、稳定性
接口测试，只需要前后端定义好接口，那这时自动化就可以介入编写接口自动化测试代码
	</textarea>
	<span>5.OSI七层模型有哪些层？</span>
	<textarea>
物理层、数据链路层、网络层、
传输层、会话层、表示层、应用层。
	</textarea>
	<span>6.TCP/IP四层模型是如何的？</span>
	<textarea>
应用层	文件传输，电子邮件，文件服务，虚拟终端 
传输层	可靠与不可靠的传输、传输前的错误检测、流控
网络层	提供逻辑地址、选路(IP地址)
网络接口层	传输有地址的帧以及错误检测功能 
	</textarea>
	<span>7.TCP/UPD的区别是什么？他们是在TCP/IP模型的哪一层？</span>
	<textarea>
连接方式  TCP:面向连接(拨号)                             UDP:无连接(无需拨号)
可靠程度  TCP:数据无差错，不丢失，不重复，按序到达 	 UDP:不保证可靠交付
传输方式  TCP:基于字节流	                         UDP:基于报文(不会网络堵塞)
支持方式  TCP:点对点	                                 UDP:一对多、多对多
资源要求  TCP:系统资源要求多	                         UDP:资源要求少
	</textarea>
	<span>8.常用的接口测试工具有哪些？</span>
	<textarea>
常用的接口测试工具：postman，jmeter，soapUI等等
	</textarea>
	<span>9.什么是协议？常见的协议有哪些？</span>
	<textarea>
为了使数据可以在网络上从源传递到目的地，网络上所有设备需要“讲”相同的“语言”
描述网络通信中“语言”规范的一组规则就是协议

TCP  UDP     HTTP   HTTPS    FTP  DNS  Telnet    TCP/IP    SSL/TLS   websocket

	</textarea>
	<span>10.什么是三次握手和四次挥手？作用是什么？</span>
	<textarea id="width2">
三次握手
1.主机A向主机B发送连接请求，请求建立通信。
2.主机B收到主机A的请求后，回送同意连接的响应给主机A。
3.主机A收到主机B传回的数据后，再发一个确认包给主机B确认已经收到主机B的数据。
三次握手就完成了，主机A和主机B可以传输数据了。	

第一次握手：建立连接时，客户端发送syn包（syn=j）到服务器，并进入SYN_SENT状态，等待服务器确认；SYN：同步序列编号（Synchronize Sequence Numbers）。

第二次握手：服务器收到syn包，必须确认客户的SYN（ack=j+1），同时自己也发送一个SYN包（syn=k），即SYN+ACK包，此时服务器进入SYN_RECV状态；

第三次握手：客户端收到服务器的SYN+ACK包，向服务器发送确认包ACK(ack=k+1），此包发送完毕，客户端和服务器进入ESTABLISHED（TCP连接成功）状态，完成三次握手。
</textarea>
<textarea class="width">
四次挥手

1.第一次挥手：Client发送一个FIN，用来关闭Client到Server的数据传送，Client进入FIN_WAIT_1状态。

2.第二次挥手：Server收到FIN后，发送一个ACK给Client，确认序号为收到序号+1（与SYN相同，一个FIN占用一个序号），Server进入CLOSE_WAIT状态。

3.第三次挥手：Server发送一个FIN，用来关闭Server到Client的数据传送，Server进入LAST_ACK状态。

4.第四次挥手：Client收到FIN后，Client进入TIME_WAIT状态，接着发送一个ACK给Server，确认序号为收到序号+1，Server进入CLOSED状态，完成四次挥手。
“3次握手”的作用就是双方都能明确自己和对方的收、发能力是正常的。

因为当Server端收到Client端的SYN连接请求报文后，可以直接发送SYN+ACK报文。其中ACK报文是用来应答的，SYN报文是用来同步的。
但是关闭连接时，当Server端收到FIN报文时，很可能并不会立即关闭SOCKET，所以只能先回复一个ACK报文，告诉Client端，"你发的FIN报文我收到了"。
只有等到我Server端所有的报文都发送完了，我才能发送FIN报文，因此不能一起发送。故需要四步握手。
FIN ：连接终止位					字段	含义
seq：发送的第一个字节的序号				URG	紧急指针是否有效。为1，表示某一位需要被优先处理  
ACK：确认报文段   					ACK	确认号是否有效，一般置为1
ack：确认号。						PSH	提示接收端应用程序立即从TCP缓冲区把数据读走。
							RST	对方要求重新建立连接，复位。
					SYN	请求建立连接，并在其序列号的字段进行序列号的初始值设定。建立连接，设置为1
							FIN	希望断开连接。
</textarea>


	<span>11.http请求处于OSI模型的哪一层？</span>
	<textarea>
应用层
	</textarea>
	<span>12.http协议的请求包含哪些内容？</span>
	<textarea>
Http请求由四部分组成，分别是：请求行、消息报头、空行、请求正文
	</textarea>
	<span>13.http协议报头包含哪些内容？</span>
	<textarea class="width1">
常用的请求报头如下：
Accept:浏览器可接受的MIME类型。
MIME用于设定某种扩展名的文件用哪种应用程序来打开的方式类型，当该扩展名文件被访问的时候，浏览器会自动使用指定应用程序来打开。
Accept-Encoding:浏览器能够进行解码的数据编码方式，比如gzip。
Accept-Language:浏览器所希望的语言种类，当服务器能够提供一种以上的语言版本时会用到。
Connection:表示是否需要持久连接。从HTTP1.1起，默认都开启了Keep-Alive,保持连接特性。
Host:初始URL中的主机和端口，它通常是从HTTP URL中提取出来的。
User-Agent:请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务器。
	</textarea>
	<textarea class="width1" >
常用的响应报头如下：
Content-Type:表示后面的文档属于哪种MIME类型。
Date:当前的GMT(国际时）时间。
Server:包含了服务器用来处理请求的软件信息。X-Frame-Options：用来给浏览器指示允许一个页面可否在<frame>、<iframe>或者<object>中展现的标记。
网站可以使用此功能，来确保自己网站的内容没有被嵌到别人的网站中去。
		
	</textarea>
	<span>14.get请求和post请求的区别有哪些？</span>
	<textarea class="width1">
GET使用URL或Cookie传参，而POST将数据放在请求的BODY（请求体）中。
GET的URL会有长度上的限制，而POST的数据则可以非常大。 
POST比 GET 安全。
get请求能够被缓存，请求会保存在浏览器的浏览（历史）记录中，请求的数据会显示在地址栏中，不安全，请求的url能够保存为浏览器书签(收藏夹)
post请求不能被缓存，请求不会保存在浏览器浏览记录中；请求的数据不会显示的地址栏中，相对安全，请求的url无法保存为浏览器书签
一般get请求用来获取数据，post请求用来发送数据。
get请求数据只支持ASCII类型,post请求数据类型没有限制，支持二进制数据。
	</textarea>
	<span>15.http请求的响应由哪些部分组成？</span>
	<textarea>
状态行、消息报头、空行和响应正文
	</textarea>
	<span>16.常见的http响应码有哪些？</span>
	<textarea id="width2">
1**
表示服务器收到请求，需要请求者继续执行操作。
200
2开头的都表示这个请求发送成功
最常见的是200，代表这个请求是OK的，服务器也返回了。
300
3开头的代表重定向，最常见的是302，把这个请求重定向到别的地方了。
400：客户端错误
400代表客户端发送的请求有语法错误，401代表访间的页面没有授权，403依示没有权限访问这个页面，404代表没有这个页面。
500：服务端错误
5开头的代表服务器有异常，500代表服务器内部异常，503代表由于超载或系统维护，服务器暂时无法处理客户端清求，504服务器端超时，没返回结果。
	</textarea>
	<span>17.404和503分别代表什么意思？</span>
	<textarea>
404代表没有这个页面
503代表由于超载或系统维护，服务器暂时无法处理客户端清求
	</textarea>
	<span>18.http和https的区别？http和https的端口号分别是哪些？</span>
	<textarea>
1、https协议需要到ca申请证书，一般免费证书较少，因而需要一定费用。
2、http是超文本传输协议，信息是明文传输，https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式，用的端口也不一样，前者是80，后者是443。
4、http的连接很简单，是无状态的；HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议，比http协议安全。
</textarea>
	<span>19.接口测试的需求文档包含哪些内容？</span>
<textarea>
接口说明
调用url
请求方法（get 、post)
请求参数、参数类型、请求参数说明、请求头header
返回参数说明、请求响应的代码、响应内容
</textarea>
	<span>20.接口测试用例如何设计？</span>
	<textarea>
通过性验证
参数组合
接口安全
异常验证
	</textarea>
<span>
	jmeter在做接口测试时，必要的组成部分有哪些？
</span>
<textarea>取样器、断言、监听器、前置处理器、配置元件、后置处理器、控制器、定时器、线程组
</textarea>
	<span>什么是参数化？参数化的作用是什么？</span>


<textarea>
参数化：
测试用户登录时需要输入用户名和密码，假如系统不允许相同的用户名和密码同时登录，或者想更好的模拟多个用户来登录系统。
这个时候就需要对用户名和密码进行参数化，使每个虚拟用户都使用不同的用户名和密码进行访问。

作用：
方便快捷，可以重复使用
</textarea>
	<span>什么叫断言？为什么添加断言？</span>
	<textarea>
断言是预期结果和实际结果进行的一个判断。
添加断言可以提高工作效率，实现自动化操作。
	</textarea>
	<span>集合点是什么？如何添加集合点？</span>
	<textarea>
集合点是集合点可以设置多个虚拟用户等待到一个点，同时触发一个事务，已达到模拟真实环境中多个用户同时操作，同时产生负载，实现性能测试的最终目的。
添加集合点：
		1.在线程组中右击选择添加-定时器-Synchronizing timer
		number of Simulated Users to Group by：每次释放的线程数量(相当于每次增加的虚拟用户)
		Timeout in millisecondes：为0，到达释放线程数量就释放，大于0，超过最大等待时间就释放线程，不等待到达线程数量，单位：毫秒，1s=1000ms
		2.查看结果树


	</textarea>
	<span>什么是关联？关联的意义是什么？</span>
	<textarea>
如登录系统和用户信息查询系统。
用户首先在登录系统拿到服务器给的session值，通过session值在用户信息查询系统的接口登录。
意义：http是无状态协议，需要通过cookic和session去标识用户信息，拿到了session值后才能去访问用户信息查询系统。
	</textarea>
	<span>什么是FTP？FTP的作用是什么？</span>
	<textarea>
FTP:文件传输协议
上传或下载文件
	</textarea>
</body>
</html>